package com.tarena.test.luban.demo.dubbo.provider;

import com.tarena.demo.luban.all.main.rpc.CartApiImpl;
import com.tarena.demo.luban.cart.api.CartApi;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;

/**
 * 运行dubbo进程
 * 启动dubboApplication(dubbo应用):携带provider所有配置信息
 */
public class Provider {
    public static void main(String[] args) {
        // 获取一个duboo的启动对象
        DubboBootstrap boot = DubboBootstrap.getInstance();
        // 配置各种信息 包括注册中心\配置底层协议\接口实现
        // 1.dubbo应用名称
        boot.application("cart-provider");
        // 2.注册中心的配置
        RegistryConfig registryConfig = new RegistryConfig("nacos://localhost:8848");
        boot.registry(registryConfig);
        // registryConfig.setProtocol("nacos"); //注册中心类型
        // registryConfig.setAddress("localhost:8848"); //注册中心地址
        // 3.配置协议\监听端口
        ProtocolConfig protocolConfig = new ProtocolConfig("dubbo",20990);
        boot.protocol(protocolConfig);
        // 4.提供当前dubbo应用外界可以调用的实现对象 new CartApiImpl
        ServiceConfig<CartApi> serviceConfig01 = new ServiceConfig<>();
        serviceConfig01.setInterface(CartApi.class);
        serviceConfig01.setRef(new CartApiImpl());
        boot.service(serviceConfig01);
        // 调用boot方法启动dubbo应用
        boot.start().await();



    }
}



